/**
 * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
 * 
 * 项目名：	cards-web
 * 文件名：	WxAppServiceImpl.java
 * 模块说明：	
 * 修改历史：
 * 2017年4月21日 - Debenson - 创建。
 */
package cn.binarywang.wx.miniapp.api.impl;

import com.github.binarywang.wxpay.service.WxPayService;

import cn.binarywang.wx.miniapp.api.WxMaConfigEx;
import cn.binarywang.wx.miniapp.api.WxMaQrcodeService;
import cn.binarywang.wx.miniapp.api.WxMaQrcodeServiceEx;
import cn.binarywang.wx.miniapp.api.WxMaServiceEx;
import cn.binarywang.wx.miniapp.api.WxMaUserService;
import cn.binarywang.wx.miniapp.api.WxMaUserServiceEx;
import cn.binarywang.wx.miniapp.config.WxMaConfig;

/**
 * 对小程序服务接口的扩展
 * 
 * @author Debenson
 * @since 0.1
 */
public class WxMaServiceExImpl extends WxMaServiceImpl implements WxMaServiceEx {
  private WxMaQrcodeServiceEx maQrcodeService = new WxMaQrcodeServiceExImpl(this);
  private WxPayService wxAppPayService = new WxAppPayServiceImpl(this);
  private WxMaUserServiceEx maUserService = new WxMaUserServiceExImpl(this);

  @Override
  public WxMaUserService getUserService() {
    return maUserService;
  }

  @Override
  public WxMaQrcodeService getQrcodeService() {
    return maQrcodeService;
  }

  @Override
  public WxMaUserServiceEx getUserServiceEx() {
    return maUserService;
  }

  @Override
  public WxMaQrcodeServiceEx getQrcodeServiceEx() {
    return maQrcodeService;
  }

  @Override
  public WxPayService getWxAppPayService() {
    return wxAppPayService;
  }

  @Override
  public WxMaConfigEx getWxMaConfigEx() {
    return (WxMaConfigEx) super.getWxMaConfig();
  }

  @Override
  public void setWxMaConfig(WxMaConfig wxConfigProvider) {
    if (!(wxConfigProvider instanceof WxMaConfigEx)) {
      throw new IllegalArgumentException("要求传入WxMaConfigEx实例");
    }
    super.setWxMaConfig(wxConfigProvider);
  }

}
